/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * FormLogin.java
 *
 * Created on 18/10/2011, 21:21:36
 */

package sistemachamados.view;

import classes.Setor;
import classes.Usuario;
import java.util.ArrayList;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;

/**
 *
 * @author Alan JPS
 */
public class FormLogin extends javax.swing.JFrame {
    private int i;

    /** Creates new form FormLogin */
    public FormLogin() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        popupMenu1 = new java.awt.PopupMenu();
        txtEmail = new javax.swing.JTextField();
        txtSenha = new javax.swing.JPasswordField();
        txtNome = new javax.swing.JTextField();
        btnLogin = new javax.swing.JButton();
        txtEmailCadastro = new javax.swing.JTextField();
        cbxSetoresCadastro = new javax.swing.JComboBox();
        btnCadastrarUsuario = new javax.swing.JButton();
        jLabel2 = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();

        popupMenu1.setLabel("popupMenu1");

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Sistema de Chamados"); // NOI18N
        setName("frmLogin"); // NOI18N
        setResizable(false);
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentShown(java.awt.event.ComponentEvent evt) {
                formComponentShown(evt);
            }
        });
        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        txtEmail.setFont(new java.awt.Font("Century Gothic", 0, 13));
        txtEmail.setBorder(null);
        txtEmail.setName("txtEmail"); // NOI18N
        txtEmail.setOpaque(false);
        getContentPane().add(txtEmail, new org.netbeans.lib.awtextra.AbsoluteConstraints(830, 30, 200, -1));

        txtSenha.setBorder(null);
        txtSenha.setName("txtSenha"); // NOI18N
        txtSenha.setOpaque(false);
        getContentPane().add(txtSenha, new org.netbeans.lib.awtextra.AbsoluteConstraints(830, 64, 200, 20));

        txtNome.setFont(new java.awt.Font("Century Gothic", 0, 13));
        txtNome.setToolTipText("Digite o nome do usuário a ser cadastrado"); // NOI18N
        txtNome.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        txtNome.setName("txtNome"); // NOI18N
        getContentPane().add(txtNome, new org.netbeans.lib.awtextra.AbsoluteConstraints(440, 300, 240, -1));
        txtNome.getAccessibleContext().setAccessibleDescription("Digite o nome do usuário a ser cadastrado."); // NOI18N

        btnLogin.setFont(new java.awt.Font("Berlin Sans FB", 0, 14));
        btnLogin.setText("Entrar");
        btnLogin.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        btnLogin.setBorderPainted(false);
        btnLogin.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        btnLogin.setName("btnLogin"); // NOI18N
        btnLogin.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnLoginMouseClicked(evt);
            }
        });
        getContentPane().add(btnLogin, new org.netbeans.lib.awtextra.AbsoluteConstraints(870, 100, 90, 30));

        txtEmailCadastro.setFont(new java.awt.Font("Century Gothic", 0, 13));
        txtEmailCadastro.setToolTipText("Digite o e-mail para cadastro"); // NOI18N
        txtEmailCadastro.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        txtEmailCadastro.setName("txtEmailCadastro"); // NOI18N
        getContentPane().add(txtEmailCadastro, new org.netbeans.lib.awtextra.AbsoluteConstraints(440, 360, 240, -1));
        txtEmailCadastro.getAccessibleContext().setAccessibleDescription("Digite um e-mail para cadatro."); // NOI18N

        cbxSetoresCadastro.setFont(new java.awt.Font("Century Gothic", 0, 14));
        cbxSetoresCadastro.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Selecione um Setor..." }));
        cbxSetoresCadastro.setToolTipText("Selecione o setor em que trabalha"); // NOI18N
        cbxSetoresCadastro.setAutoscrolls(true);
        cbxSetoresCadastro.setBorder(null);
        cbxSetoresCadastro.setName("cbxSetoresCadastro"); // NOI18N
        cbxSetoresCadastro.setOpaque(false);
        getContentPane().add(cbxSetoresCadastro, new org.netbeans.lib.awtextra.AbsoluteConstraints(440, 420, 240, -1));

        btnCadastrarUsuario.setFont(new java.awt.Font("Berlin Sans FB", 0, 14));
        btnCadastrarUsuario.setText("Enviar");
        btnCadastrarUsuario.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        btnCadastrarUsuario.setBorderPainted(false);
        btnCadastrarUsuario.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        btnCadastrarUsuario.setName("btnCadastrarUsuario"); // NOI18N
        btnCadastrarUsuario.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnCadastrarUsuarioMouseClicked(evt);
            }
        });
        btnCadastrarUsuario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCadastrarUsuarioActionPerformed(evt);
            }
        });
        getContentPane().add(btnCadastrarUsuario, new org.netbeans.lib.awtextra.AbsoluteConstraints(510, 460, 90, 30));

        jLabel2.setFont(new java.awt.Font("Arial", 0, 12));
        jLabel2.setForeground(new java.awt.Color(102, 255, 255));
        jLabel2.setText("Esqueci minha senha!");
        jLabel2.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        jLabel2.setName("jLabel2"); // NOI18N
        getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(850, 140, -1, -1));

        jLabel1.setFont(new java.awt.Font("Calibri", 0, 12));
        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sistemachamados/view/LOGIN COM SETOR.png"))); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N
        jLabel1.setOpaque(true);
        getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, -1, -1));

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-1075)/2, (screenSize.height-626)/2, 1075, 626);
    }// </editor-fold>//GEN-END:initComponents

    private void formComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentShown
        Setor setor = new Setor();
        ArrayList<Setor> listTodosSetores = setor.selecionar();
        if(listTodosSetores != null)
        {
            cbxSetoresCadastro.setModel(new DefaultComboBoxModel(listTodosSetores.toArray()));
        }
        else
        {
            JOptionPane.showMessageDialog(this, "Houve um erro ao carregar os setores para o cadastro de usuários. \n"+
                                                " Até resolver este problema, não será possível incluir usuários no sistema.",
                                                "Erro ao carregar os setores...",
                                                JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_formComponentShown

    private void btnLoginMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnLoginMouseClicked
        // TODO add your handling code here:
                // TODO verificar se o processo está correto
        Usuario usuarioLogado = new Usuario();
        usuarioLogado.setEmail(txtEmail.getText());
        usuarioLogado.setSenha(String.valueOf(txtSenha.getPassword()));
        usuarioLogado = usuarioLogado.validaUsuario();
        if(usuarioLogado != null)
        {
            FormPrincipal formPrincipal = new FormPrincipal(usuarioLogado);
            formPrincipal.show(true);
            formPrincipal.setVisible(true);
        }
        else
        {
            JOptionPane.showMessageDialog(this, "Usuário e/ou senha inválidos.", "Falha na autenticação", JOptionPane.WARNING_MESSAGE);
        }
    }//GEN-LAST:event_btnLoginMouseClicked

    private void btnCadastrarUsuarioMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnCadastrarUsuarioMouseClicked
        Usuario novoUsuario = new Usuario();
        novoUsuario.setNome(txtNome.getText());
        novoUsuario.setEmail(txtEmailCadastro.getText());
        novoUsuario.setSenha("chamado"); //Senha padrão
        novoUsuario.setSetor((Setor)cbxSetoresCadastro.getSelectedItem());
        if(novoUsuario.salvar())
        {
            JOptionPane.showMessageDialog(this, "Seu registro foi efetivado e está aguardando aprovação do administrador.\n"+
                                                "Aguarde o email de confirmação para ter acesso ao sistema",
                                                "Sucesso na operação",
                                                JOptionPane.INFORMATION_MESSAGE);
        }
        else
        {
            JOptionPane.showMessageDialog(this, "Houve um erro ao inserir um novo usuário. \n"+
                                                "Tente novamente mais tarde. Caso o erro persista, entre em contato com o administrador.",
                                                "Erro ao processar a requisição...",
                                                JOptionPane.WARNING_MESSAGE);
        }
    }//GEN-LAST:event_btnCadastrarUsuarioMouseClicked

    private void btnCadastrarUsuarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCadastrarUsuarioActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_btnCadastrarUsuarioActionPerformed

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                FormLogin login = new FormLogin();
                //login.setLocationByPlatform(true);
                login.setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnCadastrarUsuario;
    private javax.swing.JButton btnLogin;
    private javax.swing.JComboBox cbxSetoresCadastro;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private java.awt.PopupMenu popupMenu1;
    private javax.swing.JTextField txtEmail;
    private javax.swing.JTextField txtEmailCadastro;
    private javax.swing.JTextField txtNome;
    private javax.swing.JPasswordField txtSenha;
    // End of variables declaration//GEN-END:variables
}
